MATLAB:生成相同的随机数序列

您所在的位置:网站首页 matlab 1 1 随机数 MATLAB:生成相同的随机数序列

MATLAB:生成相同的随机数序列

#MATLAB:生成相同的随机数序列| 来源: 网络整理| 查看: 265

我想使用mersenne twister在10到50之间生成'N'个随机数.我希望能够一遍又一遍地生成相同的序列.

我写了以下代码:(种子= 50,a = 10,b = 50,N =所需随机数的数量)

s = rng(seed, 'twister'); r = a + (b-a)*rand(N,1); rng(s); r1 = a + (b-a)*rand(N,1);

现在即使我打印

r1 - r

我没有得到零.我期望得到零,因为我已经将随机数生成器重置为我的代码第三行中的初始状态.

我的问题是我哪里出错了?

1> TroyHaskin..:

从rng文档:

sprev = rng(...)返回由rand,, 使用的随机数生成器的先前设置randi,并randn在更改设置之前.

所以你s是先前的状态,而不是设定状态.改变事物

rng(seed, 'twister'); s=rng(); r = a + (b-a)*rand(N,1); rng(s); r1 = a + (b-a)*rand(N,1);

应该产生所需的行为.

这可能看起来很麻烦,但它出现了,因为rng它意味着像切换一样对待:你设置你的状态,同时存储前一个用于将来的恢复.毕竟,立即重置状态似乎比实际更具诊断性.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3